package com.alameda.menu.bo;

import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 菜单业务对象
 *
 * @author Lv
 * @date 2024/6/12
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "MenuBO", description = "菜单")
public class MenuBO {
    /**
     * 菜单路径
     */
    private String path;

    /**
     * 菜单组件
     */
    private String component;

    /**
     * 菜单组件路径
     */
    private String redirect;

    /**
     * 是否暴露菜单功能
     */
    private Boolean alwaysShow;

    /**
     * 子菜单组件名称
     */
    private String name;

    /**
     * 是否隐藏
     */
    private Boolean hidden;

    /**
     * 菜单元数据信息
     */
    private Meta meta;

    /**
     * 子菜单
     */
    private List<Children> children;

    /**
     * 子菜单
     */
    @Data
    @Builder
    public static class Children {
        /**
         * 子菜单访问路径
         */
        private String path;

        /**
         * 子菜单组件路径
         */
        private String component;

        /**
         * 子菜单组件名称
         */
        private String name;

        /**
         * 子菜单元数据信息
         */
        private Meta meta;
    }

    /**
     * 菜单元数据信息
     */
    @Data
    @Builder
    public static class Meta {
        /**
         * 菜单名称
         */
        private String title;

        /**
         * 图标
         */
        private String icon;

        /**
         * 无需缓存
         */
        private String noCache;
    }

}
